/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package gui.event.ulti;

import gui.event.manhinhchinh.ButtonTabComponent;
import java.io.File;
import java.util.List;
import javax.swing.JButton;
import javax.swing.JComponent;
import javax.swing.JFileChooser;
import javax.swing.JPanel;
import javax.swing.JTabbedPane;

/**
 *
 * @author nv_ca@live.com
 */
public class Util {

    /**
     * Phương thức add 1 panel vào môt tabbed pane
     *
     * @param panelName tên của panel sẽ hiển thị khi được add vào tab
     * @param jTabbedPane tabbed pane mà panel sẽ được thêm vào
     * @param panel panel được xem như một tab được thêm vào tabbed pane
     */
    public static final void addTab(String panelName, JTabbedPane jTabbedPane, JPanel panel) {
        //check jTabbedPane already has it yet
        if (jTabbedPane.indexOfTab(panelName) == -1) {//if not yet
            jTabbedPane.addTab(panelName, panel);//add tab
            int index = jTabbedPane.indexOfTab(panelName);// get index of tab, for reuse
            jTabbedPane.setTabComponentAt(index, new ButtonTabComponent(jTabbedPane));//set x button on tab
            jTabbedPane.setSelectedIndex(index);// if we add a tab, let this tab is selected
        } else {
            jTabbedPane.setSelectedIndex(jTabbedPane.indexOfTab(panelName));// if already has, show it
        }
    }

    /**
     * close 1 tab chỉ định
     *
     * @param panelName tên của tab cần đóng
     * @param jTabbedPane tabbed pane chứa tab có tên là panelName
     */
    public static final void closeATab(String panelName, JTabbedPane jTabbedPane) {
        jTabbedPane.remove(jTabbedPane.indexOfTab(panelName));
    }

    /**
     * Enable một danh sách button được truyền vào
     *
     * @param listButtons danh sách các button để enable
     */
    public static final void enableListButtons(List<JButton> listButtons) {
        for (JButton button : listButtons) {
            button.setEnabled(true);
        }
    }

    /**
     * Disable một danh sách button được truyền vào
     *
     * @param listButtons danh sách các button để disable
     */
    public static final void disableListButtons(List<JButton> listButtons) {
        for (JButton button : listButtons) {
            button.setEnabled(false);
        }
    }

    /**
     * Enable một danh sách JComponent
     *
     * @param listComponents danh sách component sắp được enable
     */
    public static final void enableListComponents(List<JComponent> components) {
        for (JComponent c : components) {
            c.setEnabled(true);
        }
    }

    /**
     * Disable một danh sách JComponent
     *
     * @param listComponents danh sách component sắp được disable
     */
    public static final void disableListComponents(List<JComponent> components) {
        for (JComponent c : components) {
            c.setEnabled(false);
        }
    }

    // Phần code cho JFile chooser
    public static final int BACKUP = 1;
    public static final int RESTORE = 2;

    /**
     * Duyêt thư mục để backup or restore khách hàng
     *
     * @param type kiểu cửa sổ: backup or restore
     * @param title title cho cửa sổ
     */
    public static final String browseDir(int type, String title) {
        String path = "";
        JFileChooser fc = new JFileChooser();
        fc.setDialogTitle(title);
        fc.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);
        int approve = -1;
        switch (type) {
            case BACKUP:
                approve = fc.showSaveDialog(null);
                break;
            case RESTORE:
                approve = fc.showOpenDialog(null);
                break;
        }
        
        if (approve == JFileChooser.APPROVE_OPTION) {
            File dir = fc.getSelectedFile();
            path = dir.getAbsolutePath();
        }
        return path;
    }
}
